// mostly taken from the book page 336

#ifdef _WIN32
#include <windows.h>
#endif
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <cmath>
#include "Point3.h"
#include "Vector3.h"

class Camera
{
    public:
        Camera(); // constructor
        void set(Point3, Point3, Vector3); // like gluLookAt()
        void set(float, float, float, float, float, float, float, float, float);
        void rotate(Vector3, float);
        void roll(float); // roll it
        void pitch(float); // increase pitch
        void yaw(float); // yaw it
        void slide(float,float,float); // slide it
        void setShape(float,float,float,float);
        //void getShape(float, float, float, float);
    private:
        Point3 eye, look;
        Vector3 u, v, n, up;
        float viewAngle, aspect, nearDist, farDist;
        void setModelViewMatrix();
};
